--[[
  class: Game.Entity

  A base class for game entities.
]]


--[[
  int: index

  The entity index.

  Data Type: int::
  Minimum Value: 1::
  Access: Read-Only::
]]
Game.Entity.index


--[[
  table: user

  Table for storing user-made data.

  Data Type: table::
  Access: Read-Write::
]]
Game.Entity.user


--[[
  int: health

  The current health point(s).

  Data Type: int::
  Range: 1 ~ 1000000::
  Access: Read-Write::

  Warnings:
    - If (this > <Game.Entity.maxhealth>), then <Game.Entity.maxhealth> will be clamped automatically.
]]
Game.Entity.health


--[[
  int: maxhealth

  The maximum health point(s) can be reached.

  Data Type: int::
  Range: 1 ~ 1000000::
  Access: Read-Write::

  Warnings:
    - If (this < <Game.Entity.health>), then <Game.Entity.health> will be clamped automatically.
]]
Game.Entity.maxhealth


--[[
  int: armor

  The current body armor point(s).

  Data Type: int::
  Range: 1 ~ 1000000::
  Access: Read-Write::

  Warnings:
    - If (this > <Game.Entity.maxarmor>), then <Game.Entity.maxarmor> will be clamped automatically.
]]
Game.Entity.armor


--[[
  int: maxarmor

  The maximum body armor point(s) can be reached.

  Data Type: int::
  Range: 1 ~ 1000000::
  Access: Read-Write::

  Warnings:
    - If (this < <Game.Entity.armor>), then <Game.Entity.armor> will be clamped automatically.
]]
Game.Entity.maxarmor


--[[
  table: position

  The current position on world.

  Data Type: table / <~Virtual Table.vector3D>::
  Access: Read-Write::

  Warnings:
    - Changes only applied when the target position is not blocked.
]]
Game.Entity.position


--[[
  table: velocity

  The current velocity.

  Data Type: table / <~Virtual Table.vector3D>::
  Access: Read-Write::

  Notes:
    - Can partially modify one or more axis point(s).

  Example:
  --- Lua
  -- Full change.
  player.velocity = { x = 0, y = 10.5, z = 100.0 }

  -- Partial change.
  player.velocity = { z = 100.0 }
  ---
]]
Game.Entity.velocity


--[[
  method: GetEntityType

  Get the entity type.

  Access: Read-Only::

  Returns:
    (*int / <Game.ENTITYTYPE>*) The entity type.
]]
function Game.Entity:GetEntityType ()


--[[
  method: IsMonster

  Check whether this entity is a monster entity.

  Access: Read-Only::

  Returns:
    (*bool*) true (Is a monster entity) / false (Is not a monster entity).
]]
function Game.Entity:IsMonster ()


--[[
  method: IsPlayer

  Check whether this entity is a player entity.

  Access: Read-Only::

  Returns:
    (*bool*) true (Is a player entity) / false (Is not a player entity).
]]
function Game.Entity:IsPlayer ()


--[[
  method: ToMonster

  Cast this object into <Game.Monster> object.

  Access: Read-Only::

  Returns:
    (*<Game.Monster> / nil*) The monster entity instance (nil = Failed to cast).
]]
function Game.Entity:ToMonster ()


--[[
  method: ToPlayer

  Cast this object into <Game.Player> object.

  Access: Read-Only::

  Returns:
    (*<Game.Player> / nil*) The player entity instance (nil = Failed to cast).
]]
function Game.Entity:ToPlayer ()


--[[
  method: ShowOverheadDamage

  Display floating numeric text over the top of the entity bounding box.

  Access: Read-Only::

  Notes:
    - Mostly being used for display damage taken on the entity.

  Parameters:
    damage      - (*number*) Value to display.
    playerIndex - (*int*) Only display it to given player entity index (0 = To all players).
]]
function Game.Entity:ShowOverheadDamage (damage, playerIndex)


--[[
  method: SetRenderFX

  Set the entity rendering effect.

  Access: Read-Only::

  Parameters:
    fx - (*int / <Game.RENDERFX>*) The rendering effect type.
]]
function Game.Entity:SetRenderFX (fx)


--[[
  method: SetRenderColor

  Set the entity rendering color.

  Access: Read-Only::

  Parameters:
    fx - (*table / <~Virtual Table.color>*) The rendering color table.
]]
function Game.Entity:SetRenderColor (color)

